Option Explicit
Option Strict

Imports System.Reflection
Imports System.Runtime.InteropServices


<assembly:AssemblyKeyFile("PersonVB.snk")>

Namespace People

  Public Interface IPersonVB
  
  	Property FirstName() As String
  	Property LastName()  As String
  	
  	Function FullName()  As String

  End Interface
  

  Public Class PersonVB
  	Implements IPersonVB

    Private _firstName As String
    Private _lastName  As String

    Overloads Public Sub New()
    End Sub

    Overloads Public Sub New(firstName As String, lastName As String)
      _firstName = firstName
      _lastName = lastName
    End Sub


    Public Property FirstName() As String Implements IPersonVB.FirstName

      Get
        FirstName = _firstName
      End Get
      Set
        _firstName = value
      End Set

    End Property

    Public Property LastName() As String Implements IPersonVB.LastName

      Get
        LastName = _lastName
      End Get
      Set
        _lastName = value
      End Set

    End Property


    Public Function FullName() As String Implements IPersonVB.FullName
    
    	Return _firstName & " " & _lastName
    
    End Function

  End Class


  
  Public Class <ClassInterfaceAttribute(ClassInterfaceType.AutoDual)> Person1VB

    Private _firstName As String
    Private _lastName  As String

    Overloads Public Sub New()
    End Sub

    Overloads Public Sub New(firstName As String, lastName As String)
      _firstName = firstName
      _lastName = lastName
    End Sub


    Public Property FirstName() As String
      Get
        FirstName = _firstName
      End Get
      Set
        _firstName = value
      End Set

    End Property

    Public Property LastName() As String

      Get
        LastName = _lastName
      End Get
      Set
        _lastName = value
      End Set

    End Property


    Public Function FullName() As String
    
    	Return _firstName & " " & _lastName
    
    End Function

  End Class

End Namespace
